package com.moli.iov.down.enums.command;

/**
 * <p>
 * 下发协议指令枚举
 * </p>
 *
 * @author: zql
 * @Date: 2018/11/27 10:06
 */
public enum CommandEnum {

  /**
   * 远程车辆控制命令
   */
  REMOTE_CONTROL((byte) 0xD1, "远程车辆控制命令"),

  /**
   * 远程升级命令
   */
  REMOTE_UPGRADE((byte) 0xD3, "远程升级命令"),

  /**
   * 终端参数查询命令
   */
  TERMINAL_PARAMETER_QUERY((byte) 0xD8, "终端参数查询命令"),

  /**
   * 终端参数设置
   */
  TERMINAL_PARAMETER_SETTING((byte) 0xD9, "终端参数设置"),

  /**
   * 终端控制
   */
  TERMINAL_CONTROL((byte) 0xDD, "终端控制"),

  /**
   * 请求车辆实时信息上报
   */
  REMOTE_ROLL_CALL((byte) 0xDF, "请求车辆实时信息上报");

  private byte flag;

  private String msg;

  CommandEnum(byte flag, String msg) {
    this.flag = flag;
    this.msg = msg;
  }

  public static String getMsg(byte flag) {
    for (CommandEnum e : CommandEnum.values()) {
      if (e.flag == flag) {
        return e.msg;
      }
    }
    return "未定义协议";
  }

  /**
   * 终端响应是否更新数据库
   */
  public static boolean isUpdate(byte flag) {
    return REMOTE_CONTROL.getFlag() == flag ||
        REMOTE_UPGRADE.getFlag() == flag ||
        TERMINAL_PARAMETER_SETTING.getFlag() == flag ||
        TERMINAL_CONTROL.getFlag() == flag;
  }

  public byte getFlag() {
    return flag;
  }

  public String getMsg() {
    return msg;
  }
}
